扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:刘涛 来源:作者授权转载 2007年10月21日
关键字:
///////////////////////////////////////////////////////////// void CDIBView::OnInitialUpdate() { CscrollView::OnInitalUpdate(); CDIBDoc *pDoc=GetDocument(); If(pDoc->m_hDIB==NULL)//如果位图数据为空,设置m_sizeDoc的默认尺寸; pDoc->m_sizeDoc.cx=pDoc->m_sizeDoc.cy=100; SetScrollSizes(MM_TEXT,pDoc-> m_sizeDoc); } ///////////////////////////////////////////////////////////// void CDIBView::OnDraw(CDC *pDC) { BITMAPINFOHEADER *lpDIBHdr;//位图信息头结构指针; BYTE *lpDIBBits;//指向位图像素灰度值的指针; BOOL bSuccess=FALSE; CPalette*OldPal=NULL;//调色板指针; HDC hDC=pDC->GetSafeHdc();//获取当前设备上下文的句柄; CDIBDoc *pDoc=GetDocument();//获取活动文档的指针; If(pDoc->m_hDIB ==NULL) {//判断图像数据是否为空; AfxMessageBox("图像数据不能为空,请首先读取图像数据!"); return; } lpDIBHdr=( BITMAPINFOHEADER *)GlobalLock(pDoc->m_hDIB);//得到图像的位图头信息 lpDIBBits=lpDIBHdr+sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD);//获取保存图像像素值的缓冲区的指针; if(pDoc-> m_palDIB) {//如果存在调色板信息,实现逻辑调色板; OldPal=pDC-> SelectPalette(pDoc-> m_palDIB,TRUE); PDC->RealizePalette(); } else { AfxMessageBox("图像的调色板数据不能为空,请首先读取调色板信息!"); return ; } SetStretchBltMode(hDC,COLORONCOLOR); //显示图像 BSuccess=StretchDIBBits(hDC,0,0,pDoc-> m_sizeDoc.cx, pDoc-> m_sizeDoc.cy, 0, pDoc-> m_sizeDoc.cy,0, pDoc-> m_sizeDoc.cy, lpDIBBits,(LPBITMAPINFO)lpDIBHdr, DIB_RGB_COLORS, SRCCOPY); GlobalUnlock(pDoc->m_hDIB); If(OldPal)//恢复调色板; PDC->SelectPalette(OldPal,FALSE); retrun; } |
婵犵鈧啿鈧綊鎮樻径鎰畺闁靛ň鏅滄慨婊堟偨椤栨稓鎽冮柟鐑╂櫊瀹曟岸宕堕埡鍌滄殸闂佽鍨伴崢鏍姳閿涘嫭鍠嗘い銈呭姬婵☆偅婢樺Λ妤呮偂濞嗘挸瀚夐柍褜鍓熷顒侊紣娓氣偓閻涙捇鏌涘┑鍛樂缂佹鐭傞獮搴ㄥ焵椤掑嫬瀚夋い鏍ㄧ懁缁诲棝鏌熼褍鐏茬紒杈ㄧ箞閺屽洭鏁愰崟顓犳澖闁荤姳闄嶉崹钘壩i崟顖涘殜闁硅泛顫曢埀顒€锕︾槐鏃堝箣閻愬弬妤呮煛閸偄鐏﹂柛瀣墬缁傛帞鎹勯搹瑙勵啈闂佸搫瀚烽崹閬嶅磻瀹ュ鍎嶉柛鏇ㄥ墯娴犳ê霉閿濆棗鈻曢柍褜鍓氶弻銊ф閻愬鈻曢悗锝傛櫇椤忛亶鏌曢崱顓熷